package models

import (
	"database/sql"
)

type READER_CARDINFO struct {
	// READER_CARDINFO 记录读者卡信息
	RDID         string //读者证号
	CARDID       string // 物理卡ID
	CARDTYPE     string // 卡类型
	TRANSACTTIME string // 写入时间
	// LASTUSEDTIME string // 最后使用时间
	// ISUSABLE     string // 是否可用
	// TOTALOFUSED  string // 总使用次数
}

func readerCardInfoI(db *sql.DB, data *READER_CARDINFO) error {

	// 检查数据是否存在于表中
	queryExist := "SELECT COUNT(*) FROM (SELECT 1 FROM READER_CARDINFO WHERE RDID = :1 AND ROWNUM = 1) t"
	var count int
	err := db.QueryRow(queryExist, data.RDID).Scan(&count)
	if err != nil {
		return err
	}
	lg.Debug("readerCardInfoI count ", count)
	if count == 0 {
		// 数据不存在，插入数据
		queryInsert := `INSERT INTO READER_CARDINFO (RDID, CARDID, CARDTYPE,TRANSACTTIME) VALUES (:1, :2, :3, TO_DATE(:4, 'SYYYY-MM-DD HH24:MI:SS'))`
		smt, err := db.Prepare(queryInsert)
		if err != nil {
			return err
		}
		defer smt.Close()
		_, err = smt.Exec(data.RDID, data.CARDID, data.CARDTYPE, data.TRANSACTTIME)
		if err != nil {
			return err
		}
		lg.Debug("readerCardInfoI Inserted new data", data.RDID)
	} else {
		// 数据存在，检查是否需要更新
		// queryCheck := "SELECT CARDID FROM READER_CARDINFO WHERE RDID = :1"
		// var cardid string
		// err = db.QueryRow(queryCheck, data.RDID).Scan(&cardid)
		// if err != nil {
		// 	return err
		// }

		// if cardid != data.CARDID {
		// 数据不同，更新数据
		queryUpdate := `UPDATE READER_CARDINFO SET CARDID = :1 WHERE RDID = :2`
		smt, err := db.Prepare(queryUpdate)
		if err != nil {
			return err
		}
		defer smt.Close()
		_, err = smt.Exec(data.CARDID, data.RDID)
		if err != nil {
			return err
		}
		lg.Debug("readerCardInfoI Updated existing data", data.CARDID, data.RDID)
		// }
	}
	return nil
}
